import DB from "@/common/sqlite.js";

export default {
	/**
	 * 初始化页面阅读数据 - 优化版，添加缓存逻辑
	 */
	async initPageReadDatas() {
		const that = this;
		try {
			// 从数据库获取阅读数据 - 带超时控制
			// 检查sqlDBConfig是否存在
			if (!that.$sqlDBConfig || typeof that.$sqlDBConfig.selectReadTableData2 !== 'function') {
				console.warn('sqlDBConfig is not available, using mock data');
				// 使用空数组作为默认值
				const collDatas = [];
				that.cachedList = [...collDatas];
				that.list = [...collDatas];
				if (that.$refs && that.$refs.paging) {
					that.$refs.paging.complete();
				}
				return;
			}

			const res = await Promise.race([
				that.$sqlDBConfig.selectReadTableData2(),
				new Promise((_, reject) => setTimeout(() => reject(new Error('数据库查询超时')), 3000))
			]);
			const collDatas = [];

			// 处理数据并添加阅读进度等增强信息
			res.forEach(function(item, index) {
				const itemDetail = JSON.parse(item.bookinfo);
				try {
					let readInfo = uni.getStorageSync("readProcessData" + itemDetail.bookCode);
					if (readInfo && readInfo.readProcessData && readInfo.readProcessData.detail) {
						// 添加阅读进度
						itemDetail.progress = (readInfo.readProcessData.detail.progress).toFixed(2);
					} else {
						itemDetail.progress = 0;
					}
				} catch (error) {
					console.error('获取阅读进度失败:', error);
					itemDetail.progress = 0;
				}
				collDatas.push(itemDetail);
			});
			

			// 数据完整性检查
			if (collDatas.length > 0) {
				// 更新缓存
				that.cachedList = [...collDatas];
				// 使用更智能的更新策略，避免不必要的DOM重绘
				// 只有当新旧数据有明显差异时才更新视图
				const needUpdate = that.list.length !== collDatas.length ||
					!that.list.every((item, index) =>
						item.bookCode === collDatas[index]?.bookCode &&
						item.progress === collDatas[index]?.progress
					);

				if (needUpdate) {
					// 使用setTimeout作为requestAnimationFrame的兼容替代方案，确保DOM更新更平滑
					// 优先检查是否存在requestAnimationFrame，不存在则使用setTimeout
					const animationFrame = typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame :
						setTimeout;
					animationFrame(() => {
						that.list = [...collDatas];
						that.$refs.paging.complete();
					}, 0);
					
				}else{
					that.$refs.paging.complete();
				}
			}else{
				that.$refs.paging.complete();
			}

		} catch (error) {
			that.$refs.paging.complete();
		} finally {
			// 隐藏加载状态
			setTimeout(() => {
				uni.hideLoading();
				that.isRefreshing = false;
			}, 300);
		}
	},

	/**
	 * 查询列表数据（用于z-paging的下拉刷新）
	 */
	queryList() {
		this.initPageReadDatas();
	},

	/**
	 * 进入书籍详情页
	 */
	enterBookInfoDetail(e) {
		if (!e) return;

		// 添加点击动画效果，优化导航体验
		const bookInfoStr = JSON.stringify(e);
		// 不使用nextTick，直接执行导航，减少延迟
		uni.navigateTo({
			url: '/pages/baseBusiness/bookInfoDetail/bookInfoDetailView?bookInfo=' + encodeURIComponent(
				bookInfoStr),
			success: () => {
				// 记录阅读历史
				this.recordReadingHistory(e);
			}
		});
	},


	/**
	 * 记录阅读历史
	 */
	recordReadingHistory(bookInfo) {
		try {
			// 这里可以添加记录阅读历史的逻辑
			// 例如更新最近阅读时间、阅读进度等
			console.log('记录阅读历史:', bookInfo.bookName);
		} catch (error) {
			console.error('记录阅读历史失败:', error);
		}
	}
}